The growing computational complexity and data rate requirements of new multimedia applications demand that signal processing systems provide efficient and flexible compression and decompression routines. Encoding is a technique used to compress media files such as image and video files. An example of an image coding and decoding standard that may be used in various user devices is Joint Photographic Experts Group (JPEG.
The JPEG standard utilizes a lossy compression technique for compressing still images based on the discrete cosine transform (DCT) and the inverse discrete cosine transform (IDCT) for coding and decoding operations respectively. In the JPEG standard an 8×8 array of sample data, known as a data block, may be used for processing, where the sample data may correspond to luminance (Y) or chrominance (Cr and Cb) information of the still image signal. Four 8×8 blocks of luminance, an 8×8 block of Cr, and an 8×8 block of Cb data is known in JPEG terminology as a minimum coded unit (MCU). This type of JPEG encoding is referred to as YUV420. There are other types of JPEG encoding, such as, for example, YUV444.
In addition, decoding operations specified by, for example, the JPEG standard, may utilize computation-intensive algorithms, such as a Huffman decoding algorithm, which is a variable length coding (VLC) technique. In this regard, Huffman decoding may utilize a large portion of on-chip computing and/or memory resources, which may increase processing time and decrease overall system efficiency.
Therefore, it would be advantageous to have a method, system, and computer program product that addresses one or more of the issues discussed above.